<?php

/*
** COMITATO PROVINCIALE DI CATANIA - CROCE ROSSA ITALIANA
*/

/*
** classe RicercaPersone
** Allo scopo di cercare Persone per una proprietà.
** es.:
**	$ricerca = new RicercaPersone('localita');
**	$ricerca->valore = 'Giarre';
**	$risultati = $ricerca->risultati(1);
** Ritorna la prima pagina di Risultati.
*/

class RicercaPersone {
	public
		$perPagina, $nome,
			$valore;
	private
		$db;

	public function __construct($nome = '', $valore = '') {
		global $conf, $db;
		$this->db = $db;
		$this->perPagina = $conf['ricercaPersone']['perPagina'];
		$this->nome = $nome;
		$this->valore = $valore;
	}

	/*
	** array risultati ( pagina )
	** - Ritorna i risultati della ricerca alla pagina
	** - Se nessuna pagina, ritorna tutti i risultati
	** - Se nessun risultato, ritorna array vuoto
	*/
	public function risultati($pagina = NULL) {
		$subQuery = $this->subQuery();
		$q = "SELECT persone.id 
			$subQuery";
		
		if ($pagina) {
			$offset = ( ($pagina-1) * $this->perPagina );
			$q .= " LIMIT $offset, {$this->perPagina}";
		}
		
		$q = $this->db->query($q);
		if (!$q) { return array(); }
		$v = array();
		while ( $r = $this->db->fetch_array($q) ) {
			$v[] = new Persona($r[0]);
		}
		return $v;
	}
	
	/*
	** int numRisultati ()
	** - Ritorna il numero dei risultati della ricerca
	*/
	public function numRisultati() {
		$subQuery = $this->subQuery();
		$q = "SELECT COUNT(persone.id) " . $subQuery;
		return (int) $this->singolo($q);
	}
	
	private function subQuery() {
		$nome = $this->db->escape($this->nome);
		$valore = $this->db->escape($this->valore);
		return "FROM
			persone, proprieta
			 WHERE
			persone.id = proprieta.persona
			AND
			proprieta.nome = '$nome'
			AND
			proprieta.valore LIKE '%$valore%'
			 ORDER BY
			persone.nome ASC,
			persone.cognome ASC";
	}
}
